package defi1;

import donnees.Variables;

public class Cesar {
	
	private String alphabet = Variables.minuscule;
	private String msgClair;
	private String msgCrypt;
	private int cle; 
	
	public Cesar(String msgCrypt, int cle) {
		this.msgCrypt = msgCrypt;
		this.cle = cle;
	}
	
	public String crypter(){
		System.out.println("Alphabet: " + alphabet);
		System.out.println("Message clair : " + msgClair);
		String result = "";
		for(int i = 0; i < msgClair.length(); i++){
			for(int j = 0; j < alphabet.length(); j++){
				if(msgClair.charAt(i) == alphabet.charAt(j)){
					int cpt = ((j + getCle()) % alphabet.length() + alphabet.length()) % alphabet.length();
					result += alphabet.charAt(cpt);
				}
			}
		}
		return result;
	}
	
	public String decrypt(){
		//System.out.println("Alphabet: " + alphabet);
		//System.out.println("Message crypt : " + msgCrypt);
		String result = "";
		for(int i = 0; i < msgCrypt.length(); i++){
			for(int j = 0; j < alphabet.length(); j++){
				if(msgCrypt.charAt(i) == alphabet.charAt(j)){
					int cpt = ((j - getCle()) % alphabet.length() + alphabet.length()) % alphabet.length();
					result += alphabet.charAt(cpt);
				}
			}
		}
		return result;
	}
	
	public String trouverCle(){
		int cle = (getMsgCrypt().charAt(0) - getMsgClair().charAt(0)) % alphabet.length();
		String result = Integer.toString(cle);
		for(int i = 1; i < msgClair.length(); i++){
			int cleVerif = (getMsgCrypt().charAt(i) - getMsgClair().charAt(i)) % alphabet.length();
			if( cle != cleVerif)
				result = "Probleme dans le chiffrement";
		}
		return result;
	}
	
	public String getMsgClair() {
		return msgClair;
	}

	public String getMsgCrypt() {
		return msgCrypt;
	}

	public int getCle() {
		return cle;
	}

	public void setMsgClair(String msgClair) {
		this.msgClair = msgClair;
	}

	public void setMsgCrypt(String msgCrypt) {
		this.msgCrypt = msgCrypt;
	}

	public void setCle(int cle) {
		this.cle = cle;
	}
	
	public void choixCryptage(){
		System.out.println("Message crypt : " + crypter());
	}
	
	public void choixDecryptage(){
		System.out.println("Message clair : " + decrypt());
	}
	
	public void choixTrouverCle(){
		System.out.println("La cle : " + trouverCle());
	}

//	public static void main(String[] args){
//		System.out.println("Chiffrement de Cesar");
//		Cesar cesar = new Cesar();
//		Scanner scMsg = new Scanner(System.in);
//		Scanner scCle = new Scanner(System.in);
//		Scanner scChoix = new Scanner(System.in);
//		//Choix
//		System.out.println("Veuillez choisir : [1]Crypter [2]Decrypter [3]TrouverCle"); int strChoix = scChoix.nextInt();
//		if( strChoix == 1 ){
//			//Choix Cle
//			System.out.println("Vous avez saisi la cle : "); int strCle = scCle.nextInt();
//			cesar.setCle(strCle);
//			//Le message clair
//			System.out.println("Veuillez saisir votre texte :"); String strMsg = scMsg.nextLine();
//			cesar.setMsgClair(strMsg);
//			cesar.choixCryptage();
//		}
//		else if (strChoix == 2) {
//			//Choix Cle
//			System.out.println("Vous avez saisi la cle : "); int strCle = scCle.nextInt();
//			cesar.setCle(strCle);
//			//Le message crypt
//			System.out.println("Veuillez saisir votre texte :"); String strMsg = scMsg.nextLine();
//			cesar.setMsgCrypt(strMsg);
//			cesar.choixDecryptage();
//		}
//		else if (strChoix == 3) {
//			System.out.println("Veuillez saisir votre texte clair:"); String strMsg = scMsg.nextLine();
//			Scanner scMsgCrypt = new Scanner(System.in);
//			System.out.println("Veuillez saisir votre texte crypt:"); String strMsgCrypt = scMsgCrypt.nextLine();
//			cesar.setMsgClair(strMsg);
//			cesar.setMsgCrypt(strMsgCrypt);
//			cesar.choixTrouverCle();
//		}
//	}
}
